关于c++ [ ]符号的编写 急~~~

来源:百度知道 编辑:UC知道 时间:2024/06/26 04:44:36
比如一个string ab[12]cd[34]ef
[]之间不一定只有两个字符,这个string里面也不一定只有两个[],可能更多,但是这个string最多不会超过30个字符。
[]的作用是取[]之间的任意一个字符。
比如我写的这个例子,那输出的结果就应该是:
ab1cd3ef
ab1cd4ef
ab2cd3ef
ab2cd4ef(这四个的输出顺序无所谓哪个先哪个后)

这个应该怎么写了?希望有详细些的回答。谢谢
如果不只是单纯的output,而是把得到的结果存到一个array里面呢?
比如定义一个array: string input[4];
让input[0]=ab1cd3ef
input[1]=ab1cd4ef
input[2]=ab2cd3ef
input[3]=ab2cd4ef

#include<iostream>
#include<string>
using namespace std;

void go(string str,string res){
int i;
for(i=0;i<str.size()&&str[i]!='[';i++);
if(i==str.size()){
res+=str;
cout<<res<<endl;
}
else{
int j,k;
for(j=i;str[j]!=']';j++);
j++;
for(k=i+1;str[k]!=']';k++){
string tmp=res;
tmp+=str.substr(0,i);
tmp+=str[k];
if(j<str.size())
go(str.substr(j),tmp);
else
go(string(""),tmp);
}
}
}

int main(){
string str;
cin>>str;
go(str,string(""));
return 0;
}

输入:
ab[12]cd[34]ef
输出:
ab1cd3ef
ab1cd4ef
ab2cd3ef
ab2cd4ef

注:输入字符串的"[]"内必须至少有一个字符,否则程序无输出。(其实我懒得改了)
改程序可接受基本上任意长度的string,里面可以有任意多[]

PS:算法一样的,不过sylecn那个程序